﻿using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
using System.Text.Json.Serialization;

namespace Acme.MeiTuan.SDK.PushRequest;

[Serializable]
public class MeiTuanOrderCreatedDto
{
    /// <summary>
    /// 1）字段说明：订单展示ID，与用户端、商家端订单详情中展示的订单号码一致。
    /// </summary>
    [Required]
    public string? wm_order_id_view { get; set; }
    /// <summary>
    /// 1）字段说明：APP方门店id，即商家中台系统里门店的编码。
    /// </summary>
    [Required]
    public string? app_poi_code { get; set; }
    /// <summary>
    /// 1）字段说明：推送订单当前的状态。 2）字段范围：订单状态参考值有：1用户已提交订单；2向商家推送订单；4商家已确认；8订单已完成；9订单已取消。 此推送状态为1，即 用户已提交订单
    /// </summary>
    [Required]
    public string? status { get; set; }
    /// <summary>
    /// 字段说明：订单的实际在线支付总价，单位是元。 此字段数据为用户实际支付的订单总金额，含打包袋、配送费等。
    /// </summary>
    [Required]
    public string? total { get; set; }
    /// <summary>
    /// 字段说明：订单创建时间，为10位秒级的时间戳，此字段为用户提交订单的时间。
    /// </summary>
    [Required]
    public string? ctime { get; set; }
    /// <summary>
    /// 1）字段说明：预计送达时间。 2）字段范围：若为“立即送达”订单则推送0；若是“预订单”则推送用户选择的预计送达时间，为10位秒级的时间戳。
    /// </summary>
    [Required]
    public string? delivery_time { get; set; }
    /// <summary>
    /// 订单商品详情
    /// </summary>
    public List<MeiTuanOrderCreatedDetail>? detailObj { get; set; }
    [Required]
    [IgnoreDataMember]
    [JsonIgnore]
    public string? detail { get; set; }
}

/// <summary>
/// 订单商品详情
/// </summary>
public class MeiTuanOrderCreatedDetail
{
    /// <summary>
    /// 1）字段说明：商家系统里的商品SPU编码。 2）字段范围：(1)不同门店之间商品id可以重复，同一门店内商品id不允许重复。(2)字段信息限定长度不超过128个字符。(3)如此字段信息推送的是商品名称或信息为空，则表示商家没有维护商品编码，请商家自行维护。
    /// </summary>
    public string? app_food_code { get; set; }
    /// <summary>
    /// 1）字段说明：商家系统里的SKU码。
    /// </summary>
    public string? sku_id { get; set; }
    /// <summary>
    /// 1）字段说明：商品名称。
    /// </summary>
    public string? food_name { get; set; }
    /// <summary>
    /// 1）字段说明：商品sku的规格名称。
    /// </summary>
    public string? spec { get; set; }
    /// <summary>
    /// 1）字段说明：订单中此商品sku的购买数量。
    /// </summary>
    public int quantity { get; set; }
    /// <summary>
    /// 1）字段说明：商品售卖单位。
    /// </summary>
    public string? unit { get; set; }
}